1 registered members (AndrewAMD),
552
guests, and 1
spider. |
Key:
Admin,
Global Mod,
Mod
|
|
|
shape soll sich mitdrehn
#451693
05/16/15 19:28
05/16/15 19:28
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
Hallo Wie ist es möglich ein Shape mitdrehn zulassen ,welches wiederrum ein Zahnrad ist ?
//////////////
action spin_kreuz1()
{
ENTITY* gear8 = ent_create("add_shape2.mdl",vector(120,0,0),NULL);
set(gear8, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear8.pan = i;
pXent_addshape(me, gear8, 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 spin_kreuz2()
{
ENTITY* gear8 = ent_create("add_shape2.mdl",vector(-120,0,0),NULL);
set(gear8, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear8.pan = i;
pXent_addshape(me, gear8, 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 spin_kreuz3()
{
ENTITY* gear8 = ent_create("add_shape2.mdl",vector(0,120,0),NULL);
set(gear8, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear8.pan = i;
pXent_addshape(me, gear8, 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 spin_kreuz4()
{
ENTITY* gear8 = ent_create("add_shape2.mdl",vector(0,-120,0),NULL);
set(gear8, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear8.pan = i;
pXent_addshape(me, gear8, 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 test_block()
{
pXent_settype(me,PH_RIGID,PH_CONVEX);
ENTITY* kreuz1 = ent_create ("kreuz.mdl", vector(120,0,0), spin_kreuz1);
ENTITY* kreuz2 = ent_create ("kreuz.mdl", vector(-120,0,0), spin_kreuz2);
ENTITY* kreuz3 = ent_create ("kreuz.mdl", vector(0,120,0), spin_kreuz3);
ENTITY* kreuz4 = ent_create ("kreuz.mdl", vector(0,-120,0), spin_kreuz4);
c_setminmax(me);
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);
}
-> mit k und j drehe ich zwar das object aber nicht die shapes -> wie drehe ich das GANZE jetz sammt shape+shape_action?
Last edited by ratz; 05/16/15 19:55.
|
|
|
Re: shape soll sich mitdrehn
[Re: ratz]
#451699
05/17/15 17:48
05/17/15 17:48
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
so .... https://www.youtube.com/watch?v=nzUzH1KbBwo
action spin_wheel1()
{
//ENTITY* mechanik2 = ent_create ("kreuz.mdl", vector(me.x+120,0,10), my_wheel1);
ENTITY* gear1 = ent_create("add_shape2.mdl",vector(me.x+120,0,0),NULL);
set(gear1, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear1.pan = i;
pXent_addshape(me, gear1, 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 spin_wheel2()
{
// ENTITY* mechanik2 = ent_create ("kreuz.mdl", vector(me.x-120,0,10), my_wheel1);
ENTITY* gear2 = ent_create("add_shape2.mdl",vector(me.x-120,0,0),NULL);
set(gear2, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear2.pan = i;
pXent_addshape(me, gear2, 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 spin_wheel3()
{
// ENTITY* mechanik2 = ent_create ("kreuz.mdl", vector(me.x+120,0,10), my_wheel1);
ENTITY* gear3 = ent_create("add_shape2.mdl",vector(0,me.y+120,0),NULL);
set(gear3, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear3.pan = i;
pXent_addshape(me, gear3, 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 spin_wheel4()
{
// ENTITY* mechanik2o = ent_create ("add_shape2.mdl", vector(me.x+120,0,10), my_wheel1);
ENTITY* gear4 = ent_create("add_shape2.mdl",vector(0,me.y-120,0),NULL);
set(gear4, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
gear4.pan = i;
pXent_addshape(me, gear4, 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);
///////////////////////////////////////
// pXent_setbodyflag(me,NX_BF_KINEMATIC,1);
/// while (1)
//{
// angle.pan += -1*time_step;
// pXent_rotate(me, nullvector, vector(angle.pan,0,0));
// wait(1);
// }
//
}
///////////////////////////////////////////////////////
action mechanik_5()
{
while (1)
{
my.pan += 1;
wait(1);
}
ent_create("kreuz.mdl",vector(me.x+120,0,0),NULL);
}
action show_cross()
{
ENTITY* cross1 = ent_create("add_shape2.mdl",vector(me.x+120,0,0), NULL);
set(cross1, VISIBLE);
c_setminmax(me);
pXent_settype(me,PH_RIGID,PH_SPHERE);
var i;
for (i=10; i<360; i+=72) {
cross1.pan = i;
pXent_addshape(me, cross1, 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);
pXent_setbodyflag(me,NX_BF_KINEMATIC,1);
while (1)
{
angle.pan += -8* time_step;
pXent_rotate(me, nullvector, vector(angle.pan,0,0));
wait(1);
}
}
action test_block()
{
pXent_settype(me,PH_RIGID,PH_CONVEX);
ENTITY* mechanik1 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel1);
ENTITY* mechanik2 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel2);
ENTITY* mechanik3 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel3);
ENTITY* mechanik4 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel4);
//ENTITY* mechanik5 = ent_createlocal ("block.mdl", vector(me.x,0,0), show_cross);
// ENTITY* mechanik6 = ent_create ("kreuz.mdl", vector(me.x,0,0), mechanik_5);
// ENTITY* mechanik7 = ent_create ("kreuz.mdl", vector(me.x,0,0), mechanik_5);
// ENTITY* mechanik8 = ent_create ("kreuz.mdl", vector(me.x 0,0), mechanik_5);
c_setminmax(me);
pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik1,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik2,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik3,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik4,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
// pXent_setbodyflag(mechanik5,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
// Steuerung Schleife
while(1)
{
if (key_j)
{
angle.pan += -8* time_step;
pXent_rotate(me, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik1, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik2, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik3, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik4, nullvector, vector(angle.pan,0,0));
}
if (key_k)
{
angle.pan += 8* time_step;
pXent_rotate(me, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik1, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik2, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik3, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik4, nullvector, vector(angle.pan,0,0));
}
wait(1);
}
}
die shapes drehen sich mit , aber jetz mochte ich dass dass Zahnrad um das object dreht und um sich selbst ... problem: um das zahnrad um ein object zu drehen, wird es a von vector (0.0.0) erstellt .. um das zahnrad aber um sich selbst zu drehen muss der Vector in test_block() auf me.x+120,0,0 gestellt werden, da das zahnrad sonst zu vector 0.0.0 hinwill und dann nicht mehr richtig laüft - dann dreht es sich aber nichtmehr um das object ... -> könnt ihr mir helfen ? und: wie kann ich mein ent_create(shape, vector(me.x,0,0) mechanik 1) zu einem normalen Entity machen? -> nur wenn das Shape ein Physic Ojeckt ist wird es richtig positioniert .. (ich brache aber einmal die Shapes) und einmal was "sichtbares" .. nur das "sichtbare" wird nicht dargestellt -> z.b. kreuz.mdl
Last edited by ratz; 05/17/15 18:10.
|
|
|
Re: shape soll sich mitdrehn
[Re: ratz]
#451711
05/17/15 21:57
05/17/15 21:57
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
HABS !!!!
ANGLE angle;
action my_wheel1()
{
pXent_settype(me,PH_RIGID,PH_CONVEX);
ENTITY* shape1 = ent_create("add_shape2.mdl",vector(120,0,0),NULL); // Simple box für die Zähne
set(shape1, VISIBLE);
c_setminmax(me);
// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel
var i;
for (i=10; i<360; i+=72) {
//shape1.x=30;
shape1.pan = i;
pXent_addshape(me, shape1, PH_BOX);
}
pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form
pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(shape1,NX_BF_KINEMATIC,1);
// Steuerung Schleife
ANGLE angle;
while(1)
{
angle.pan += -4* time_step;
pXent_rotate(shape1, vector(me.x+120,0,0), vector(angle.pan,0,0));
wait(1);
}
}
action my_wheel2()
{
pXent_settype(me,PH_RIGID,PH_CONVEX);
ENTITY* shape2 = ent_create("add_shape2.mdl",vector(-120,0,0),NULL); // Simple box für die Zähne
set(shape2, VISIBLE);
c_setminmax(me);
// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel
var i;
for (i=10; i<360; i+=72) {
//shape1.x=30;
shape2.pan = i;
pXent_addshape(me, shape2, PH_BOX);
}
pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form
pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(shape2,NX_BF_KINEMATIC,1);
// Steuerung Schleife
ANGLE angle;
while(1)
{
angle.pan += -4* time_step;
pXent_rotate(shape2, vector(-120,0,0), vector(angle.pan,0,0));
wait(1);
}
}
action my_wheel3()
{
pXent_settype(me,PH_RIGID,PH_CONVEX);
ENTITY* shape3 = ent_create("add_shape2.mdl",vector(0,120,0),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) {
//shape1.x=30;
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
pXent_setbodyflag(shape3,NX_BF_KINEMATIC,1);
// Steuerung Schleife
ANGLE angle;
while(1)
{
angle.pan += -4* time_step;
pXent_rotate(shape3, vector(0,120,0), vector(angle.pan,0,0));
wait(1);
}
}
action my_wheel4()
{
pXent_settype(me,PH_RIGID,PH_CONVEX);
ENTITY* shape4 = ent_create("add_shape2.mdl",vector(0,-120,0),NULL); // Simple box für die Zähne
set(shape4, VISIBLE);
c_setminmax(me);
// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel
var i;
for (i=10; i<360; i+=72) {
//shape1.x=30;
shape4.pan = i;
pXent_addshape(me, shape4, PH_BOX);
}
pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form
pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(shape4,NX_BF_KINEMATIC,1);
// Steuerung Schleife
ANGLE angle;
while(1)
{
angle.pan += -4* time_step;
pXent_rotate(shape4, vector(0,-120,0), vector(angle.pan,0,0));
wait(1);
}
}
action test_block()
{
pXent_settype(me,PH_RIGID,PH_CONVEX);
ENTITY* mechanik1 = ent_create ("block.mdl", vector(0,0,0), my_wheel1);
ENTITY* mechanik2 = ent_create ("block.mdl", vector(0,0,0), my_wheel2);
ENTITY* mechanik3 = ent_create ("block.mdl", vector(0,0,0), my_wheel3);
ENTITY* mechanik4 = ent_create ("block.mdl", vector(0,0,0), my_wheel4);
c_setminmax(me);
pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik1,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik2,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik3,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
pXent_setbodyflag(mechanik4,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
// pXent_setbodyflag(mechanik5,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
// Steuerung Schleife
while(1)
{
angle.pan += -3* time_step;
pXent_rotate(mechanik1, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik2, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik3, nullvector, vector(angle.pan,0,0));
pXent_rotate(mechanik4, nullvector, vector(angle.pan,0,0));
wait(1);
}
}
|
|
|
|