Hallo, und hier ein gutes Tutorial :)

  • Ahoi neues Forum :),

    da ich bald in einem Umzug stecke, meine Frau mit dem IKEA-Planungshelfer Möbel verschiebt habe ich mir mal Google-Sketchup angetan um aus alten Risszeichnungen was 3D-Mäßiges zu haben (man(n) möchte ja auch was beitragen ;)).

    Da ich nun die Hütte in 3D habe wollte ich wissen wie man die Hütte nun 'bespielen' kann und dachte direkt an Arma2 :D

    Über Sketchup->Blender habe ich das Modell nun auch im Oxigen2-Editor für Arma2 (ohne LODs, Texturen...)... aber nun wird es wirklich anstrengend...

    Hier ein schönes Tutorial:
    http://community.bistudio.com/wiki/Mondkalb's_Addon_Tutorial

    Nun übe ich erstmal mit einem 1kubikmeter-würfel:
    Was benötige ich nun 'minimal' um mein arma2-p3d-Modell im Spiel-Editor zu sehen (ohne kollision und sonstigen schnickschnack: einfach nur den würfel (wie ich ihn im buldozer sehe) in Arma2 :rolleyes:)? - habe mir eine kleine config.cpp gebastelt... nada... die stringtable.csv damit der Editor es wenigstens sieht? - PBO-packen klappt wunderbar... aber ich finde es nicht im Editor :(

    „Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist.“
    -Stanislaw Jerzy Lec

  • Ich versuch mal eine ganz einfache Konfig mit Kommentaren zu erstellen.
    Gebäude sind grundsätzlich nicht so schwer. Erst wenn noch Animationen z.B. Türen oder Leitern hinzu kommen, wird es aufwendiger.

    Denn dann brauchst du im Model erstmal die Memory-LOD in der du z.B. Rotationsachsen definerst. Dann wird noch eine Model.cfg benötigt, in der du die ganze Animationen deklarierst (Kann ja mal die vom Dodge Charger hier reintellen).

    Noch etwas zu den LODs, was mir so spontan einfällt

    - Geometry-LOD: Kollisionsmodel, hier muß dem Modell auch eine Masse zugewiesen werden.
    - Shadow-LOD: Modell für die Schattenberechnung, hat einige Besonderheiten die erfüllt werden müssen z.B. nur dreieckige Polygone, etc...
    - Roadway-LOD: Für alle Horizontalen od. geneigten Fläche die begehbar sein sollen muß diese erstellt werden.

  • Hier mal eine simple config.cpp für ein Gebäude


    #define true 1
    #define false 0


    #define private 0
    #define protected 1
    #define public 2


    class CfgPatches {
    class Land_parkhouse {
    units[] = {};
    weapons[] = {};
    requiredVersion = 0.1;
    requiredAddons[] = {"CAstructuresHouse"};
    };
    };


    class CfgVehicles {
    class HouseBase; // External class reference

    class House : HouseBase {
    class DestructionEffects; // External class reference
    };
    class Ruins; // External class reference

    class Land_parkhouse : House {
    scope = 2; // Setzt man den Wert auf 2, erscheint das Objekt im Editor
    armor = 1000;
    model = "\PLD_objects\parkhouse"; //Name des p3d-Modell ohne das .p3d drin
    ladders[] = {};


    };


    };




    Land_parkhouse -> Bei Gebäuden muß das Land_ davor

  • Ahoi,

    hier wird einem ja wirklich geholfen :)

    Ich werde mich mal in dieses Thema reinarbeiten, sehr interessant.

    Ich dachte schon, ich hätte es mit der p3d schon fast geschafft :o

    Dann die LODs... da gibt es ja auch noch den Fire-LOD (etwa so wie der Geometry-LOD) für Einschüsse ... ne Menge Zeugs halt.

    Hier zB meine Test-"config.cpp", da habe ich vermutlich einige Regeln missachtet, spontan sehe ich das ich das Extension ".p3d" mit angegeben habe...

    Ich werde mir mal dein Bespiel zu gemüte führen und ein Tutorial komplett durchackern, danach erübrigt sich dann hoffentlich einiges bzw kann ich dann ein wenig qualifizierte Fragen stellen :rolleyes:

    „Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist.“
    -Stanislaw Jerzy Lec

  • Zu den LOD's:


    Solltest du mal kurz überfliegen:


    http://community.bistudio.com/wiki/LOD


    Da steht auch zu jeder LOD die Bedingungen die erfüllt sein müssen.
    Erschreck aber nicht bei den ganzen LODs.
    Die wichtigsten sind:


    Resolution-LOD => 0.000 reicht am Anfang erstmal, alle anderen können später erstellt werden.


    Geometry-LOD => Kollisionsmodell

    ShadowVolume
    => So einfach wie möglich gestalten, wird für die Berechnung der Schatten benutzt (Bedingungen beachten !).
    Ist diese nicht vorhanden, wwerden die Resolution LOD's genommen. Erstelle ich meist am Ende erst.


    LandContact-LOD => Nur bei Fahrzeugen wichtig. Einzelne Punkte markieren den Bodenkontakt.

    RoadWay-LOD
    => Bei Gebäuden wichtig. Hier werden alle Flächen definiert die begehbar sein sollen.


    Den Rest kannst du erstmal außen vor lassen, es sei denn du willst ein Fahrzeug basteln. Das würde ich zum Einstieg aber vorerst nicht empfehlen.





    P.S.: Fire-LOD kann man erstellen, muß man aber nicht. Wenn die Fire-LOD nicht da ist, nimmt die das Spiel die Geometry-LOD.

  • Zu deiner Konfig:


    1.)
    model = "box.p3d";


    Wie sieht dein Arbeitsverzeichnis aus ?


    z.B.:


    Du erstellst auf p: einen Ordner z.B. FP_building
    Darin packst du deine p3d-Datei und deine config.cpp.


    Danach müßte der Eintrag von oben so aussehen:


    model = "\FP_building\box";


    Wenn du am Ende die pbo-Datei erstellst mit BinPBO,
    mußt du den Ordner bei Addon Source directory eintragen.


    Dazu fällt mir aber noch, daß ich wohl mal ein paar Screenshots von den Einstellungen für BinPBO machen muß...:p



    2.)


    scope = 2;


    Damit das Spiel das versteht mußt du erstmal definieren, was mit 2 gemeint ist in diesem Fall.


    #define true 1
    #define false 0
    #define private 0
    #define protected 1
    #define public 2


    Das ist die Zuordnung und muß ganz am Anfang stehen oder du läßt das weg
    und schreibst es dort direkt hin:


    scope = public;



    Mit #define kann man Werte vordefinieren, damit man nicht jedesmal das ganze als Text schreiben muß. Ist allerdings nur eine Vereinfachung für config-Dateien in den mehrere Objekte definiert werden.


    Das wäre soweit das erste was mir aufgefallen ist, muß aber nicht heißen das es daran lag oder du müßtest nochmal kurz beschreiben, was du bis dato gemacht hast.


  • sicher dass das funktionieren würde?
    nach meinem Verständnis müsste doch ohne das #define score=2 funktionieren, score=public aber nicht; oder funktioniert das define hier in beide Richtungen?

  • Bin mir grad nicht sicher ob ich verstanden habe was du meinst, aber
    der Wert für scope ist standartmäßig ein "String" und mit dem Define kannst du dem String auch eine Zahl zuweisen.


    Als Beispiel stelle ich mal einen Auszug aus einer Config hier rein, in der ich auf bestehende Configs zurück greife und diese erweitere, bzw. ein paar Parameter überschreibe.



    #define private 0
    #define protected 1
    #define public 2


    #define TEast 0
    #define TWest 1
    #define TGuerrila 2
    #define TCivilian 3
    #define TSideUnknown 4
    #define TEnemy 5
    #define TFriendly 6
    #define TLogic



    class CfgPatches
    {
    class PLD_vehicles
    {
    units[] =
    {
    "PLD_hatchback","PLD_SkodaRed","PLD_Skodablue","PLD_Skodagreen","PLD_s1203",
    "PLD_VWGolf","PLD_civic","PLD_SUV","PLD_Volhablack","PLD_Volhablue","PLD_Volhagrey","PLD_sedan","PLD_Ladawhite","PLD_Ladared",
    "PLD_hilux_red","PLD_hilux_tan","PLD_hilux_white","PLD_LandRover_red",
    "PLD_monaco","PLD_Roadrunner_green","PLD_Roadrunner_yel","PLD_cuda","PLD_440cuda","PLD_barracuda","PLD_hemicuda70","PLD_hemicuda71",PLD_fury,
    "PLD_Mackr",
    "PLD_LadaPolice","PLD_SUV_Police","PLD_CVI_Patrol","PLD_CVPI_Trooper_Patrol","PLD_CVPI_TrooperSL_Patrol","PLD_CVPI_HighwaySL_Patrol","PLD_sahco","PLD_jailbus",
    "PLD_MH6J_Police"
    };
    weapons[] = {};
    requiredVersion = 0.10;
    requiredAddons[] = {"CAWheeled2", "CACharacters2", "CAWeapons", "PLD_data", "PLD_weapons"};
    };
    };




    class CfgvehicleClasses {
    class PLD_vehicles_Class {


    displayname = "PLD-Life Vehicles";
    };
    };


    class CfgVehicles {


    class car {
    class EventHandlers
    {
    init = "_this execVM '\PLD_vehicles\data\script\add_action.sqf';";
    engine = "_this execVM '\PLD_vehicles\data\script\pld_acceleration.sqf';";
    };

    };


    class car_hatchback;
    class PLD_hatchback : car_hatchback {
    scope = public;
    faction = "PLDCiv";
    vehicleClass = "PLD_Vehicles_Class";
    displayname = "VW Scirocco";
    picture = "pld_vehicles\data\images\pld_hatchback_ca.paa";
    // statement="[this] execVM ""\PLD_vehicles\data\script\action_lock.sqf""";


    PLD_weight = 980;
    PLD_cost = 6000;
    PLD_trunk = 100;


    };


    class SkodaRed;
    class PLD_SkodaRed : SkodaRed {
    scope = public;
    faction = "PLDCiv";
    vehicleClass = "PLD_Vehicles_Class";
    displayname = "Skoda 105 (red)";
    picture = "pld_vehicles\data\images\pld_skodared_ca.paa";


    PLD_weight = 915;
    PLD_cost = 9000;
    PLD_trunk = 150;


    };


    Die funzt einwandfrei so wie es hier steht.
    Kann also entweder 2 oder public dort hin schreiben.