Hallo,

Ich und nen Kollege basteln gerade an einem Breakdance Fahrgeschäfft welcher in PhysX geschrieben ist und arbeiten soll.



das Problem dabei ist:

um der PhysX-Engine mitzuteilen, dass man Shapes benutzt
muss man das ganze einmal durch den NVIDIA PHYSX VISUAL DEBUGGER ziehen, da die Shapes mit einer for-schleife hochgerechnet werden ...

-> das Shape ist nur ein länglicher Klotz, der dafür sorgt,
dass das die PhysX-Engine richtig arbeitet -> Kollision )

-> das Shape wird 360° mit 10° verlagerung unter
das Zahnrad (Motor) erzeugt. Und der Gondel !




-> aus einem älten Thead (zahnrad in PhysX)
haben wir den gleichen code genommen und
"shape.roll" zu shape.pan" im code verändert


nun das ganz große Problem:

öffne ich den Nvidia PhysX Visual Debugger (PVD)
kommt kein screen (direcX render bleibt leer)!, obwohl ich erst PVD geöffnet habe und dann das eigende Game

was machen wir falsch ??

Ich mein das ging so:

- Nvidia Debugger öffnen,
- dann das erstelle spiel öffnen[run]

und man hatte ein 3D fenster im PVD vom Level welches man erstellt hat mit 3dGS (Wände waren rot, Objecte grün etc..)

dann musste man den Debugger schließen und die PhysX funtionierte richtig in 3D Game

- Das ganze funtioniert momentan nur halb, da ich die anderen shapes nicht im PVD rendern kann.(es dreht halt nur mit ein shape)

- aber ich will, dass der alle shapes erzugt ... mit f11 in A8 lässt sich das nicht anschauen .. so zeigt der nur einen shape pro objekt frown

Hier der Code
Code:
///////////////////////////////

#include <acknex.h>
#include <ackphysx.h>

#include <default.c>
#include <mtlFX.c>
///////////////////////////////

function main()
{
	shadow_stencil = 3;
	d3d_antialias = 4;
	max_entities = 3000;
 physX_open(); 
 level_load("kirmes.WMB");
  
}

action easy_wheel2()
{	
	ENTITY* shape2 = ent_create("add_shape2.mdl",me.x,NULL);
	set(shape2, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		shape2.roll = i;
		pXent_addshape(me, shape2, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);

	pXcon_set6djoint(me,Motion,NULL);
}

/////////////////////////////////////////

/////////////////////////////////////////

 action my_wheel()
 {
 	
	pXent_settype(me,PH_RIGID,PH_CONVEX);
  
	ENTITY* shape3 = ent_create("add_shape2.mdl",me.x,NULL); // Simple box für die Zähne
	set(shape3, VISIBLE);
	
   c_setminmax(me);
	
	// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel

	var i;
	for (i=10; i<360; i+=72) {
		shape3.pan = i;
		pXent_addshape(me, shape3, PH_BOX);
	}

	pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form 
	
	pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
	
	
	// Steuerung Schleife
	ANGLE angle;
	
	while(1) 
	{
		if (key_j) 
		{
			angle.pan += -8* time_step;  	 
			pXent_rotate(me, nullvector, vector(angle.pan,0,0));	
		}
		
		
		if (key_k) 
		{
			angle.pan += 8* time_step;  	 
			pXent_rotate(me, nullvector, vector(angle.pan,0,0));	
		}
		
		wait(1);
	}
}



-> shape2,3 = Klotz (so lang wie das zahnrad)
-> easy_Wheel2 = Gondel (erzeugt darunter PhysX Shape)
-> my_wheel = Zahnrad(Motor: mit k und j steuerbar)




PS: Um den PVD2 zu bekommen muss man sich auf der Nvidia Develope Seite einmal registieren und einmal die d3dx9_43.dll in windows/system32 kopieren.

Anfangs hab ich was im pvd an elementen (leere fenster)
gesehn aber irgendwie kommt nur noch ein weißer screen wo nur halb die hwnd leiste zu sehn ist .. alles schon ausprobiert deinstalliert und installiert...

achja und von den 4 Gondeln funktioneren auch nur 2 -.-


- ich teste später mal mit neuen direct x ...

Last edited by ratz; 05/07/15 21:42.