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
Ü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 )? - 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
Hallo, und hier ein gutes Tutorial :)
-
-
Soweit El76 sich hier mal einträgt, kann er dir sicher Antwort geben
-
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 2class 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
Code- class CfgPatches {
- class Test_Box { //name of the addon
- units[] = { //units which will get added
- "Test_Box"
- };
- weapons[] = {};
- requiredVersion = 1.03;
- requiredAddons[] = {}; //addons which are required when using your addon.
- };
- };
- class CfgVehicleClasses {
- class Test_BoxOBJ { //Creates a new group under which it will be visible in the editor
- displayName = "Test Objects";
- };
- };
- class CfgVehicles {
- class NonStrategic; //loading old class for inheritance
- class Test_Box : NonStrategic { //inherits Flag from FlagCarrier
- scope = 2; //2: Visible in the editor | 1: Not visible in the editor | 0: Not visible, can't be used for inheritance
- accuracy = 1; // never recognize
- vehicleClass ="Test_BoxOBJ"; //->CfgVehicleClasses
- displayName ="Test Box"; //name of the object
- destrType = "DestructNo";
- model = "box.p3d"; //path to the binarized model
- armor = 500;// strength of wall also effected by weight amount in geo lod
- mapsize = 2;// size of icon when placed in editor
- };
- };
-
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 2Das 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.
-
Zu deiner Konfig:
#define true 1
#define false 0
#define private 0
#define protected 1
#define public 2Das ist die Zuordnung und muß ganz am Anfang stehen oder du läßt das weg
und schreibst es dort direkt hin:scope = public;
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 TLogicclass 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. -
war nicht ganz das, was ich meinte, ist aber egal, da es auf ein define mehr oder weniger ehh nicht ankommt...