Gamestudio Links
Zorro Links
Newest Posts
Blobsculptor tools and objects download here
by NeoDumont. 03/28/24 03:01
Issue with Multi-Core WFO Training
by aliswee. 03/24/24 20:20
Why Zorro supports up to 72 cores?
by Edgar_Herrera. 03/23/24 21:41
Zorro Trader GPT
by TipmyPip. 03/06/24 09:27
VSCode instead of SED
by 3run. 03/01/24 19:06
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
5 registered members (TipmyPip, AndrewAMD, Quad, aliswee, degenerate_762), 970 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
sakolin, rajesh7827, juergen_wue, NITRO_FOREVER, jack0roses
19043 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 2 of 2 1 2
Re: Kranarm / Steifes Gelenk [Re: ventilator] #384133
09/29/11 17:26
09/29/11 17:26
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline OP
Senior Expert
HeelX  Offline OP
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
@Ventilator: Also du schlägst vor, dass ich messe, bei welchem Grad das Gelenk ist und ich ne Vorgabe hab, wo die ist und dass dann dieses PID-Ding ständig automatisch Force ansetzt, um das Ziel zu erreichen? Sowas hab ich auch schon überlegt, aber das find ich gerade etwas zu kompliziert - aber vielleicht hast du ja ein einfaches Beispiel? Da steckt anscheinend viel Theorie hinter und ich will im Moment einfach nur mein Constraint locken, wenn ich keine Eingabe mache.

Last edited by HeelX; 09/29/11 18:05.
Re: Kranarm / Steifes Gelenk [Re: HeelX] #384136
09/29/11 18:10
09/29/11 18:10
Joined: May 2002
Posts: 7,441
ventilator Offline
Senior Expert
ventilator  Offline
Senior Expert

Joined: May 2002
Posts: 7,441
ja, genau!

die wikipedia seite mit den formeln ist abschreckend kompliziert. als code ausgedrückt ist ein PID controller viel einfacher (zu verstehen).

meine eigenen beispiele finde ich gerade nicht, ich hab aber gegoogelt und diese seite schaut vielversprechend aus (hab sie aber nur schnell überflogen):

http://forums.tigsource.com/index.php?topic=10130.0

einen proportional controller hat fast jeder der spiele programmiert schon mal verwendet, aber der vorteil von PID controllern ist, dass die oszillation und das overshooting unter kontrolle gehalten werden. es wird sehr genau das ziel angesteuert und die limits oder die sperre kannst du dann selbst kontrollieren.

Re: Kranarm / Steifes Gelenk [Re: HeelX] #384139
09/29/11 18:24
09/29/11 18:24
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline OP
Senior Expert
HeelX  Offline OP
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Das mit dem runterwippen hab ich erstmal temporär damit gelöst, dass ich die Gravitation ausschalte für base und ersten Kranarm. Ansonsten sieht mein Code für die Basis nun erstmal so aus:

Code:
action fwdBase ()
{
    static const var angForce = 600;
    
    while (1)
    {
        // rotate base with A and D
        var f = key_a - key_d;
        if (f != 0)
        {
            // open constraint, if closed
            if (!isFwdBaseOpen(my))
                openFwdBase(my);
            
            // rotate base
            var vt = f * angForce * time_step;
            pXent_setangvelocity(my, vector(0, 0, vt));
        }
        else // close constraint, when no force is applied
            if (isFwdBaseOpen(my))
                closeFwdBase(my);
    
        wait(1);
    }
}
    
    void fwdBaseMakeContraint (ENTITY* eBase, var limit)
    {
        // use cage upward vector is hinge direction
        
        VECTOR vAxis;
        vec_set(&vAxis, vector(0,0,-1));
        vec_rotate(&vAxis, eBase->parent->pan);

        // create stiff hinge constraint for the base
        pXcon_add(PH_HINGE, eBase, eBase->parent, 0); 
        pXcon_setparams1(eBase, eBase->x, &vAxis, NULL);
        pXcon_setparams2(eBase, vector(-limit, limit, 100), NULL, NULL);
    }

    // returns if base constraint is open
    BOOL isFwdBaseOpen (ENTITY* base)
    {
        static VECTOR vCon;
        pXcon_getposition(base, &vCon);
        
        BOOL isOpen = false;
        
        if ((vCon.x == -180) && (vCon.y == 180))
            isOpen = true;
            
        return(isOpen);
    }
    
    // opens base constraint
    void openFwdBase (ENTITY* base)
    {
        pXcon_remove(base);
        fwdBaseMakeContraint(base, 180);
    }
    
    // closes base constraint
    void closeFwdBase (ENTITY* base)
    {
        pXcon_remove(base);
        fwdBaseMakeContraint(base, 5);
    }



Ich verwende diesen workaround dann mal weiter, wäre aber schön zu hören, wenn es seitens Ihnen dann noch einen integrierte Lösung gäbe.

Melde mich dann hier wieder, wenns Probleme gibt. Insgesamt könnte das ja auch für andere user interessant sein.

Re: Kranarm / Steifes Gelenk [Re: HeelX] #465484
04/30/17 12:17
04/30/17 12:17
Joined: Dec 2010
Posts: 224
NRW, Germany
NeoJones Offline
Member
NeoJones  Offline
Member

Joined: Dec 2010
Posts: 224
NRW, Germany
Hi,
dieser Thread ist ja schon etwas älter, aber vielleicht gibt es ja mittlerweise schon eine bessere Lösung für dieses Problem.
Ich habe das gleiche Problem mit einer Gondel. Diese hängt an einem Gondelarm und soll sich um 360 Grad drehen können bei 12 Grad Neigung.
Da ich die Neigung benötige, habe ich einen Gondelhalter und 2 Hinge Constraints verwendet (Bild).



Wenn ich jedoch für Hinge 1 die Limits setze, versucht es sich auf 12 Grad hinzubiegen und kippt wieder zurück nach unten. Gravitation habe ich auf 0 gesetzt. Ich habe es auch schon mit dem 6dJoint oder dem Wheel Constraint versucht und bekomme es einfach nicht hin, das es steif bleibt. Kann jemand helfen oder hat eine Idee wie man es lösen könnte?


Errors are the engine of progress.

Version: A8 Commercial
OS: Win 7 64bit
Models: Cinema 4D
Page 2 of 2 1 2

Moderated by  old_bill, Tobias 

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