Talk:NPC Hull: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
No edit summary
Line 20: Line 20:


Notice also that the min pathway for human_hull is 30 wide by 73 high, so there's some factor other than hull size involved. Even more bizarrely, '''npc_combine.cpp''' uses the human_hull, but it's min pathway is wider than other humans tested; 32 wide by 73 high. I'm thinking this is not a simple ''add 1 unit for friction factor'' ... ? --[[User:Beeswax|Beeswax]] 10:53, 7 Mar 2008 (PST)
Notice also that the min pathway for human_hull is 30 wide by 73 high, so there's some factor other than hull size involved. Even more bizarrely, '''npc_combine.cpp''' uses the human_hull, but it's min pathway is wider than other humans tested; 32 wide by 73 high. I'm thinking this is not a simple ''add 1 unit for friction factor'' ... ? --[[User:Beeswax|Beeswax]] 10:53, 7 Mar 2008 (PST)
:I'm using the beta SDK code, and that enum now looks like this:
ai_hull_t  Human_Hull (bits_HUMAN_HULL, "HUMAN_HULL", Vector(-13,-13,  0), Vector(13, 13, 72), Vector(-8,-8,  0), Vector( 8,  8, 72) );
ai_hull_t  Small_Centered_Hull (bits_SMALL_CENTERED_HULL, "SMALL_CENTERED_HULL", Vector(-20,-20, -20), Vector(20, 20, 20), Vector(-12,-12,-12), Vector(12, 12, 12) );
ai_hull_t  Wide_Human_Hull (bits_WIDE_HUMAN_HULL, "WIDE_HUMAN_HULL", Vector(-15,-15,  0), Vector(15, 15, 72), Vector(-10,-10, 0), Vector(10, 10, 72) );
ai_hull_t  Tiny_Hull (bits_TINY_HULL, "TINY_HULL", Vector(-12,-12,  0), Vector(12, 12, 24), Vector(-12,-12, 0),     Vector(12, 12, 24) );
ai_hull_t  Wide_Short_Hull (bits_WIDE_SHORT_HULL, "WIDE_SHORT_HULL", Vector(-35,-35,  0), Vector(35, 35, 32), Vector(-20,-20, 0),     Vector(20, 20, 32) );
ai_hull_t  Medium_Hull (bits_MEDIUM_HULL, "MEDIUM_HULL", Vector(-16,-16,  0), Vector(16, 16, 64), Vector(-8,-8, 0),     Vector(8, 8, 64) );
ai_hull_t  Tiny_Centered_Hull (bits_TINY_CENTERED_HULL, "TINY_CENTERED_HULL", Vector(-8, -8,  -4), Vector(8, 8,  4), Vector(-8,-8, -4), Vector( 8, 8, 4) );
ai_hull_t  Large_Hull (bits_LARGE_HULL, "LARGE_HULL", Vector(-40,-40,  0), Vector(40, 40, 100), Vector(-40,-40, 0), Vector(40, 40, 100) );
ai_hull_t  Large_Centered_Hull (bits_LARGE_CENTERED_HULL, "LARGE_CENTERED_HULL", Vector(-38,-38, -38), Vector(38, 38, 38), Vector(-30,-30,-30), Vector(30, 30, 30) );
ai_hull_t  Medium_Tall_Hull (bits_MEDIUM_TALL_HULL, "MEDIUM_TALL_HULL", Vector(-18,-18,  0), Vector(18, 18, 100), Vector(-12,-12, 0),     Vector(12, 12, 100) );
:Which is a little easier to understand. :-) --[[user:TomEdwards|TomEdwards]] 11:58, 7 Mar 2008 (PST)

Revision as of 12:58, 7 March 2008

Dimensional Data

This is more confusing than I expected!

From ai_hull.cpp I got this vector data, which i have tried to interpret into box dimensions. The first pair of coords seem likely to describe the collision hull, but the second set of coords ... ? :

Ground Nav              Collision Hull vectors          ? vectors                       Hull dimensions      ? dimesnsions
*  Tiny_Hull		(-12,-12,  0),	(12, 12, 24),	(-12,-12,  0),	(12, 12, 24) 	= 24 x 24 x 24	&/   24 x 24 x 24 
*  Human_Hull		(-13,-13,  0),	(13, 13, 72),	( -8, -8,  0),	( 8,  8, 72) 	= 26 x 26 x 72	&/   16 x 16 x 72 
*  Wide_Human_Hull	(-15,-15,  0),	(15, 15, 72),	(-10,-10,  0),	(10, 10, 72)  	= 30 x 30 x 72	&/   20 x 20 x 72 
*  Medium_Hull		(-16,-16,  0),	(16, 16, 64),	( -8, -8,  0),	( 8,  8, 64) 	= 32 x 32 x 64	&/   16 x 16 x 64
*  Medium_Tall_Hull	(-18,-18,  0),	(18, 18, 100),	(-12,-12,  0),	(12, 12, 100) 	= 36 x 36 x 100	&/   24 x 24 x 100
*  Wide_Short_Hull	(-35,-35,  0),	(35, 35, 32),	(-20,-20,  0),	(20, 20, 32)    = 70 x 70 x 32	&/   40 x 40 x 32
*  Large_Hull		(-40,-40,  0),	(40, 40, 100),	(-40,-40,  0),	(40, 40, 100) 	= 80 x 80 x 100	&/   80 x 80 x 100
Air Nav
*  Tiny_Centered_Hull	( -8, -8, -4),	( 8,  8,  4),	( -8, -8, -4),	( 8,  8,  4) 	= 16 x 16 x  8	&/   16 x 16 x  8 
*  Small_Centered_Hull	(-20,-20,-20),	(20, 20, 20),	(-12,-12,-12),	(12, 12, 12) 	= 40 x 40 x 40	&/   24 x 24 x 24 
*  Large_Centered_Hull	(-38,-38,-38),	(38, 38, 38),	(-30,-30,-30),	(30, 30, 30) 	= 76 x 76 x 76	&/   60 x 60 x 60 

note: all NPC Hulls have a square footprint with the origin at the centre = NPC's centre of horizontal rotation. (why not use a cylinder?)
note: Ground nav NPC Hulls tower above the origin, whereas Air-nav (_Centered_Hull) hull is half above and half below its origin.

Notice also that the min pathway for human_hull is 30 wide by 73 high, so there's some factor other than hull size involved. Even more bizarrely, npc_combine.cpp uses the human_hull, but it's min pathway is wider than other humans tested; 32 wide by 73 high. I'm thinking this is not a simple add 1 unit for friction factor ... ? --Beeswax 10:53, 7 Mar 2008 (PST)

I'm using the beta SDK code, and that enum now looks like this:
ai_hull_t  Human_Hull			(bits_HUMAN_HULL,			"HUMAN_HULL",			Vector(-13,-13,   0),	Vector(13, 13, 72),		Vector(-8,-8,   0),		Vector( 8,  8, 72) );
ai_hull_t  Small_Centered_Hull	(bits_SMALL_CENTERED_HULL,	"SMALL_CENTERED_HULL",	Vector(-20,-20, -20),	Vector(20, 20, 20),		Vector(-12,-12,-12),	Vector(12, 12, 12) );
ai_hull_t  Wide_Human_Hull		(bits_WIDE_HUMAN_HULL,		"WIDE_HUMAN_HULL",		Vector(-15,-15,   0),	Vector(15, 15, 72),		Vector(-10,-10, 0),		Vector(10, 10, 72) );
ai_hull_t  Tiny_Hull			(bits_TINY_HULL,			"TINY_HULL",			Vector(-12,-12,   0),	Vector(12, 12, 24),		Vector(-12,-12, 0),	    Vector(12, 12, 24) );
ai_hull_t  Wide_Short_Hull		(bits_WIDE_SHORT_HULL,		"WIDE_SHORT_HULL",		Vector(-35,-35,   0),	Vector(35, 35, 32),		Vector(-20,-20, 0),	    Vector(20, 20, 32) );
ai_hull_t  Medium_Hull			(bits_MEDIUM_HULL,			"MEDIUM_HULL",			Vector(-16,-16,   0),	Vector(16, 16, 64),		Vector(-8,-8, 0),	    Vector(8, 8, 64) );
ai_hull_t  Tiny_Centered_Hull	(bits_TINY_CENTERED_HULL,	"TINY_CENTERED_HULL",	Vector(-8,	-8,  -4),	Vector(8, 8,  4),		Vector(-8,-8, -4),		Vector( 8, 8, 4) );
ai_hull_t  Large_Hull			(bits_LARGE_HULL,			"LARGE_HULL",			Vector(-40,-40,   0),	Vector(40, 40, 100),	Vector(-40,-40, 0),		Vector(40, 40, 100) );
ai_hull_t  Large_Centered_Hull	(bits_LARGE_CENTERED_HULL,	"LARGE_CENTERED_HULL",	Vector(-38,-38, -38),	Vector(38, 38, 38),		Vector(-30,-30,-30),	Vector(30, 30, 30) );
ai_hull_t  Medium_Tall_Hull		(bits_MEDIUM_TALL_HULL,		"MEDIUM_TALL_HULL",		Vector(-18,-18,   0),	Vector(18, 18, 100),	Vector(-12,-12, 0),	    Vector(12, 12, 100) );
Which is a little easier to understand. :-) --TomEdwards 11:58, 7 Mar 2008 (PST)