Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 1,089 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
PhysX #355590
01/28/11 03:32
01/28/11 03:32
Joined: Sep 2003
Posts: 648
Switzerland
snake67 Offline OP
User
snake67  Offline OP
User

Joined: Sep 2003
Posts: 648
Switzerland
Hi

Nochmals in diesem Forum. Wenn bei PhysX-Modellen die Triggerung mit "pXent_settriggerflag" gesetzt ist, fallen sie durch das Level.

rojart hat die PhysX-Demo "physXtest.c" aus dem Ordner "samples" abgeändert. Bei den Kugeln wird im Gegensatz zu den Würfeln das "pXent_settriggerflag" gesetzt und (nur) sie fallen durch das Level. Hier ist der Code:

Code:
//////////////////////////////////////////////////////
// PhysX stress test
// (c) jcl / oP group 2010
//////////////////////////////////////////////////////
#include <default.c>
#include <ackphysx.h>
function EventTrigger()
{
        reset(my,TRANSLUCENT); //to visualize the collision
        pX_setforcemode(NX_FORCE);
        pXent_addexplosion(you,my.x,500,my.max_x/2); // you is the entity that collides with the trigger object
        wait(4);
        set(my,TRANSLUCENT);
        vec_set(my.blue,COLOR_BLACK);
}

// convert entity to a PhysX actor
function actor(type)
{
	set(my,LIGHT|CAST);
	if (num_entities < 250) set(my,SHADOW); 
	// set random size
	vec_fill(my.scale_x,0.6+random(0.4));
	// activate physics	
	pXent_settype(my,PH_RIGID,type);
	pXent_setelasticity(my,90);
	pXent_setccdskeleton(me, vector(0.2, 0.2, 0.2), 1);
	
	// set random initial speed	
	pXent_addvelcentral(my,vector(1-random(2),1-random(2),0));
	// remove entity when fallen over the edge of the ground plate
	while(1) {
		if (my.z < 0) { 
			ent_remove(me);
			return; 
		}
		wait(1);
	}
}

function ball()
{
	my.material = mat_metal;
	vec_set(my.blue,vector(0,random(100),150+random(100)));
	actor(PH_SPHERE);
	pXent_settriggerflag(my, NX_TRIGGER_ON_ENTER , 1);
	my.event = EventTrigger;
}

function cube()
{
	vec_set(my.blue,vector(150+random(100),random(100),0));
	actor(PH_BOX);
	pXent_setfriction(my,0); // ice cube
}

function main()
{
	shadow_stencil = 3;
	d3d_antialias = 4;
	max_entities = 3000;
	physX_open();
	pX_setccd(1);
	level_load(""); // load empty level
	vec_set(camera.x,vector(-380,0,80));

	// create ground plate
	ENTITY* ground = ent_create(CUBE_MDL,vector(0,0,0),NULL);
	vec_set(ground.scale_x,vector(20,20,1));
	pXent_settype(ground,PH_STATIC,PH_BOX); 
	pXent_setfriction(ground,10);
	
	// endlessly create entities	
	while(1){
		ent_create(SPHERE_MDL,vector(random(20),random(20),150),ball);
		if (random(100) > 70) ent_create(CUBE_MDL,vector(random(20),random(20),170),cube);
		wait(-0.05);
	}
}



Was liegt hier wohl vor?

Re: PhysX [Re: snake67] #355605
01/28/11 10:12
01/28/11 10:12
Joined: Jul 2000
Posts: 27,986
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,986
Frankfurt
Ich weiss nicht genau, was Sie vorhaben, aber Sie können keine Triggerzonen durch Ihr Level kullern lassen. Eine Triggerzone ist ein fester Bereich im Level, in dem ein Trigger ausgelöst wird.

Lesen Sie hier: http://manual.3dgamestudio.net/pXent_settriggerflag.htm

Triggerzonen sind ein spezielles Feature der PhysX. Ich habe sie selbst noch nicht ausprobiert, aber Ihr Code oben macht für mich wenig Sinn. Um Ihre Triggerzone zu testen, brauchen Sie einen Actor, der hineinmarschiert. Also, zurück ins Physikforum.

Re: PhysX [Re: jcl] #355689
01/28/11 15:48
01/28/11 15:48
Joined: Oct 2004
Posts: 900
Lgh
rojart Offline
User
rojart  Offline
User

Joined: Oct 2004
Posts: 900
Lgh
Also, laut PhysX Dokumentation, sollte beides funktionieren. Dynamische und kinetische Trigger funktionieren nur mit dem unterschied das der kinetische Trigger ganz durch andere Objekte durchläuft, jedoch Dynamische Trigger mit statischen Objekten weg prallen sollten.
Dies zeigt, dass Dynamische Trigger funktionieren in der Acknex PhysX Engine nur kinetisch.
Ich werde noch heute das Beispiel zukommen lassen, dann können Sie sich das ganze in ruhe anschauen wie es funktioniert, oder wenn möglich schauen Sie sich das SampleTrigger von der PhysX Beispielen an.

Originally Posted By: jcl
Ich habe zwar Triggerzonen selbst noch nicht ausprobiert, aber Ihr Code oben macht für mich wenig Sinn.

Als Beispiel:
Wie wäre es, wenn ich mit einem Gegenstand als Stein (Dynamischen Trigger) mit anderen Objekt einen Event auslösen möchte und der Stein dann sogar abprallen sollte?

Originally Posted By: jcl
Ich weiss nicht genau, was Sie vorhaben, aber Sie können keine Triggerzonen durch Ihr Level kullern lassen. Eine Triggerzone ist ein fester Bereich im Level, in dem ein Trigger ausgelöst wird.

Nicht vergessen das PhysX Engine eine Vielfalt von mehreren Möglichkeiten eine Lösung hat, in diesem fall dynamische und kinetische Trigger.

Last edited by rojart; 01/28/11 17:56.

Regards, Robert

Quote
Everything should be made as simple as possible, but not one bit simpler.
by Albert Einstein

PhysX Preview of Cloth, Fluid and Soft Body

A8.47.1P
Re: PhysX [Re: rojart] #355816
01/29/11 07:46
01/29/11 07:46
Joined: Sep 2003
Posts: 648
Switzerland
snake67 Offline OP
User
snake67  Offline OP
User

Joined: Sep 2003
Posts: 648
Switzerland
Aha, das war die Krux.
Ich bin zuerst davon ausgegangen, dass die Implementierung von PhysX in A8 das Eventhandling zwischen Physik-Entities und normalen Entities genauso erlaubt wie ODE in A7. Das war falsch.
Na gut, dann halt nur zwischen Physik-Entities. Jetzt ist mir klar, dass auch da nicht alles geht...
Auch wenn das alles "normal" ist, die Funktionalität und die Möglichkeiten scheinen mir in A8 mit PhysX gegenüber A7 mit ODE irgendwie eingeschränkt. Nicht gut...

Re: PhysX [Re: snake67] #355829
01/29/11 12:35
01/29/11 12:35
Joined: Jul 2005
Posts: 1,930
Austria
Dark_samurai Offline
Serious User
Dark_samurai  Offline
Serious User

Joined: Jul 2005
Posts: 1,930
Austria
Im Forecast ist geplant, dass die normale Kollisionserkennung durch PhysX ersetzt wird. Dann sollten alle Entities wieder gegenseitig Events auslösen können, oder?


ANet - A stable and secure network plugin with multi-zone, unlimited players, voip, server-list features,... (for A7/A8)!
get free version
Re: PhysX [Re: Dark_samurai] #355843
01/29/11 14:29
01/29/11 14:29
Joined: Oct 2004
Posts: 900
Lgh
rojart Offline
User
rojart  Offline
User

Joined: Oct 2004
Posts: 900
Lgh
Danke für den Hinweis, ich hoffe das es dann richtig funktioniert und nicht nur teilweise.


Regards, Robert

Quote
Everything should be made as simple as possible, but not one bit simpler.
by Albert Einstein

PhysX Preview of Cloth, Fluid and Soft Body

A8.47.1P

Moderated by  HeelX, Spirit 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1