Jump to content
[evo] dan

New to modelling - need some advice on my model

Recommended Posts

Got it to work! Heres the code I put into my model.cfg.

class CfgModels
{
	class Static;

	class Oil_Drum: Static
	{
		skeletonName = "skydrol_drum";
		sectionsInherit = "Static";
		sections[]= {"CAMO_All"};
	};
};
class CfgSkeletons
{
	
};

Thanks for the help on this again Jackal!

  • Like 1

Share this post


Link to post
Share on other sites

I'm trying to make my object slingload capable. I've added 2 memory points on the model in the memory LOD. I've named them "SlingLoadCargo1" & "SlingLoadCargo2" but when I go into the game it isn't liftable. The weight of the object is only 70 so I would have thought the Huron is able to lift it. I've been using the information here:

 

http://wiki.cup-arma3.org/index.php?title=Porting_Guide



Heres my project folder for anyone who wants to have a look around:

 

https://www.dropbox.com/s/quui40vqul78qq7/Dan_Barrels.rar?dl=0

 

I've managed to get it to work by putting it into the config.cpp and not the model.cpp, but my object wont lift once I've attached it, do I need to add PhysX lod to it or something else? (or is static wrong class?)

Share this post


Link to post
Share on other sites

 added a physx lod to the model, and changed the class from 'Static' to 'ThingX' and I can now lift the object. Just need to make a destroyed model now as if I drop the model from a height, it no longer becomes able to be slingloaded which I guess means its destroyed?

Share this post


Link to post
Share on other sites

Hi Dan,

 

Your model.cfg wasn't really correct and your config.cpp needed some tweaking, so try this:

 

model.cfg

class CfgSkeletons {
	class dan_barrels_skeleton {
		isDiscrete = 1;
		skeletonInherit = "";
		skeletonBones[] = {};		
	};
};

class CfgModels {
	class Oil_Barrel_Type1 {
		skeletonName = "dan_barrels_skeleton";
		sections[] = {"CAMO_All"};
	};
};

config.cpp

class CfgPatches {
	class dan_barrels {
		units[] = {"dan_oil_barrel_type1", "dan_water_drum"};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {};
	};
};

class CfgVehicles {
	class ThingX;
	class dan_oil_barrel_type1 : ThingX {
		scope = 2;
		model = "\Dan_Barrels\Oil_Barrel_Type1.p3d";
		displayName = "Skydrol Drum";
		vehicleClass = "small_items";
		slingLoadCargoMemoryPoints[] = {
			"SlingLoadCargo1",
			"SlingLoadCargo2"
		};	
	};
	class dan_water_drum : dan_oil_barrel_type1 {
		scope = 2;
		displayName = "Water Drum";
		hiddenSelections[] = {"CAMO_All"};
		hiddenSelectionsTextures[] = {"\Dan_Barrels\Oil_Barrel_Type1Water_Texture.paa"};
	};
};

Zc8VRoH.png

  • Like 2

Share this post


Link to post
Share on other sites

Ta, i'll try it again tonight when I get home. Don't know how I got it to work on the other model then. I take it I don't need to do any other modifications to my p3d then?

Share this post


Link to post
Share on other sites

Your p3d is workable as it is.

 

You might want to add a visual LOD 2 / 3 with less polys that will display at distance and use less CPU time (eg. LOD 2 would have 1/2 the polys of LOD 1 etc).

 

You might also want to configure the damage of the model so that damage textures show, ending up with the Wreck LOD. Currently they're indestructible (I think- brief check only). 

Share this post


Link to post
Share on other sites

Your p3d is workable as it is.

You might want to add a visual LOD 2 / 3 with less polys that will display at distance and use less CPU time (eg. LOD 2 would have 1/2 the polys of LOD 1 etc).

You might also want to configure the damage of the model so that damage textures show, ending up with the Wreck LOD. Currently they're indestructible (I think- brief check only).

That was my next question as I added the mod for the wreck but cant get it to destroy. Been trying to figure it out the weekend and the wreck lod was as far as I got. When I drop the barrel from a height it does lose the ability to he slingloaded though but it doesn't get destroyed atm. Samples weren't too helpful as only the tank seems to have one and not the car or boat.

Share this post


Link to post
Share on other sites

I got it to work now. Thank you for helping me with that. Just got to set up a wreck lod as if you drop it from a height, the object can't be slingloaded, you cant walk or shoot through it but you can pass the littlebird skids through it!

 

Thanks for those links, i'll have a look through them tonight.

 

Once I get the wreck to work, i'll add another LOD or 2 to the model.

 

I assume I definitely have to use the wreck as a proxy (to a dedicated wreck p3d) for it to switch correctly once I drop the model from a height and it stops being able to be interacted with via slingloading?

Share this post


Link to post
Share on other sites

It's usual to place a wreck in it's own p3d and then place a proxy placeholder in the main model Wreck LOD.

 

The reason for this is because the wreck model is not just a visual image, but also commonly has differing Geometry, LandContact, Shadow and FireGeometry LOD's.

Share this post


Link to post
Share on other sites

It's usual to place a wreck in it's own p3d and then place a proxy placeholder in the main model Wreck LOD.

 

The reason for this is because the wreck model is not just a visual image, but also commonly has differing Geometry, LandContact, Shadow and FireGeometry LOD's.

Looking at the tank sample, I can't seem to find a reference outside of the model to the p3d for the wreck model. Do I need to define it in the model.cfg or config.cfg or is just putting the proxy in to the model from the current config good enough? Having a bit of trouble finding anything on wreck models on the biki.

Share this post


Link to post
Share on other sites

The wreck is a static object - that is, it has no animations or texture selections (use the same 'destroyed' texture for both of your barrels) - and therefore no model.cfg is needed for it.

 

Create an Oil_barrel_type1_wreck.p3d

Create visual LOD's (1-3+), ShadowVolume, Geometry, LandContact, ViewGeometry, FireGeometry as required.

None of those LOD's will have named selections or memory points.

 

In your main model Oil_barrel_type1.p3d, in the Wreck LOD, create a proxy object pointing to Oil_barrel_type1_wreck.p3d.

Share this post


Link to post
Share on other sites

Ok, thats good to know as I'm no good at creating configs. So i'll only need to put a new class reference in for the object in the config.cpp or is that not even needed?

Share this post


Link to post
Share on other sites

For the wreck, you'll need to read up on the model "Hit-points LOD" and config.cpp "Class Hitpoints". 

 

If you want to do partial damage textures (the image change you see between "fine" and "wrecked", such as bullet holes or cracks), then you'll need to look at 'Class Damage' in config.cpp.

 

Just when you think you're done, you find you're only half-way there... that's ArmA modding  ;-)

  • Like 1

Share this post


Link to post
Share on other sites

I've defined the geo model since its so simple as the hit-points LOD and created a selection in that LOD called "Barrel_Hull". I've also pointed to the proxy in the wreck model which is its own P3D. I've added a section in the config.cpp but I get a error message about the class "Barrel_Hull" although I thought that class was supposed to be named after the selection and I think that's the last place I am going wrong before it'll use a wreck model on the object taking too much damage. Heres my config.cpp:

class CfgPatches {
	class dan_barrels {
		units[] = {"dan_oil_barrel_type1", "dan_water_drum"};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {};
	};
};

class CfgVehicles {
	class ThingX;
	class dan_oil_barrel_type1 : ThingX {
		scope = 2;
		model = "\Dan_Barrels\Oil_Barrel_Type1.p3d";
		displayName = "Skydrol Drum";
		vehicleClass = "small_items";
		slingLoadCargoMemoryPoints[] = {
			"SlingLoadCargo1",
			"SlingLoadCargo2"
		};
		armor = 2;
		class Hitpoints {
			class Barrel_Hull {
				armor = 1;
				minimalHit = 0.01;
			};
		};	
	};
	class dan_water_drum : dan_oil_barrel_type1 {
		scope = 2;
		displayName = "Water Drum";
		hiddenSelections[] = {"CAMO_All"};
		hiddenSelectionsTextures[] = {"\Dan_Barrels\Oil_Barrel_Type1Water_Texture.paa"};
	};
};

Heres the rest of my project so far if you want a look:

https://www.dropbox.com/s/quui40vqul78qq7/Dan_Barrels.rar?dl=0

Share this post


Link to post
Share on other sites

I've been having another play with the config tonight. Still a bit stuck but i'm starting to understand it a bit more now. I've got the hitpoints stuff working by inheriting the hitpoints class from the car class to the point where I can change how much it takes to make my barrels unable to be slingloaded (which I assume means they are "dead"). However, its still not transitioning to the wreck model. I have added the wreck model into the config.cpp, and it places down and works fine in the editor.

 

I think it is something stupid I must be missing here, maybe its something I've setup within the proxy model wrong perhaps that prevents proper transitioning?

 

Heres my updated project:

 

https://www.dropbox.com/s/quui40vqul78qq7/Dan_Barrels.rar?dl=0

 

And here's my config.cpp:

class CfgPatches {
	class dan_barrels {
		units[] = {"dan_oil_barrel_type1", "dan_water_drum", "dan_oil_barrel_type1wreck"};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {};
	};
};

class CfgVehicles {
	class ThingX;
	class Car;

	class dan_oil_barrel_type1 : ThingX
	{
		scope = 2;
		model = "\Dan_Barrels\Oil_Barrel_Type1.p3d";
		displayName = "Skydrol Drum";
		vehicleClass = "small_items";
		armor = 30;
		fireResistance = 5;
		slingLoadCargoMemoryPoints[] = 
		{
			"SlingLoadCargo1",
			"SlingLoadCargo2"
		};
		class Hitpoints
		{
			class HitBody 
			{
				armor = 30; 
				name = "Barrel_Hull"; 
				passThrough = 1;
				material = -1;
				minimalHit = 0.1;
			};
		};
		class EventHandlers;

	};
	class dan_water_drum : dan_oil_barrel_type1 {
		scope = 2;
		displayName = "Water Drum";
		hiddenSelections[] = {"CAMO_All"};
		hiddenSelectionsTextures[] = {"\Dan_Barrels\Oil_Barrel_Type1Water_Texture.paa"};
	};
	class dan_oil_barrel_type1wreck : ThingX
	{
		scope = 2;
		model = "\Dan_Barrels\Oil_Barrel_Type1_Wreck.p3d";
		displayName = "Wrecked Barrel";
		vehicleClass = "small_items";
	}; 
};

EDIT: I've tried using the "destrType = "DestructWreck";" in my config.cpp under the barrel class but still no transitioning. Not even destroying itself so I'm not sure whats wrong with my config. Based it on the config mega list but still no joy. Do I need to trigger it off via the killed event handler or something?

 

Also, I had a look through this:

 

https://forums.bistudio.com/topic/134187-wreck-model-isant-straight-nose-sunk-into-ground/

Share this post


Link to post
Share on other sites

I don't think my actual model is being killed and I think that's my problem here. I've put satchel charges next to it and it blows up the littlebird next to it but not the barrels which stay intact although they can't be slingloaded no more.

 

I tried setting up the killed event handler in the config with the code specifying a hint should popup. But no hint popped up at all. Is this the right way to check or would the hint never popup for some reason? rpt seems clean and makes no mention of any errors.

 

Just as a further note, should my model destroy and disappear if its dead if I don't specify the destrType because by defaults its set to DestructDefault within the ThingX class according to the config viewer?

Share this post


Link to post
Share on other sites

Been continuing to play with this, but same result still. Can anybody help me out with this please as it feels like i'm banging my head against a wall?

Share this post


Link to post
Share on other sites

Out of interest, when I'm creating different detail LOD's, do I have to create lower detail versions manually or is their some kind of way to reduce the detail automatically from a higher level LOD? Or would it be better to retopologizing a lower level of detail upwards?

 

I'm unsure on this as I've been reading through the "Blender Master Class" book but I don't think its geared towards game level models.

Share this post


Link to post
Share on other sites

With care you can use Object Builder's Points > Merge Near function to semi-automatically create lower detail LOD's.

 

Only merge points within the same texture (UV map), and split out animated parts separately.

 

The "detect" button is set (it appears) to result in 50% reduction in faces. Click it to get the suggestion, then manually adjust to get the desired result.

Share this post


Link to post
Share on other sites

I assume there is something like that in Blender? or is it just best to use the collapse command?

Share this post


Link to post
Share on other sites

You can use the decimate modifier on a duplicate of your first res lod, and go from there. Although take it easy on the first couple of lods.The modifier will try to keep the silhouette as best it can, same with the uvs. But as it loses faces the uvs will start to shift. Keep an eye out for anything that looks very off. You'll know what I mean.

 

Problem areas can be separated out into an object allowing the modifier to work with something more manageable. Then you can apply it, and reintegrate the object back into the mesh. Making sure to weld any duplicated verts.

 

The equivalent, in Blender, to merge near in OB/O2 is "remove doubles". Short cut key is W while in edit mode. You can set the distance between verts to be welded once you hit W. It'll pop up on the toolshelf to the left. The default value is good for most things. As it's set for verts that are basically right on top of each other.

Share this post


Link to post
Share on other sites

I know its been a while since i've posted on this thread, but i'm looking for some opinions on my work so far within Blender before I go and start trying ot texture my model.

 

http://imgur.com/a/CFjH0

 

Its mainly based around the geometry and the UV unwrap i'm looking for opinions of. I've only done work on LOD0 and LOD1 so far. I'll probably add the Geo and Fire LOD's at a later date during the week.

  • Like 2

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×