Transform3D - dauerhafte Rotation

aze

Bekanntes Mitglied
Hi

Ich habe in meiner kleinen Java3D Welt folgende drei Rotationen eingebaut :

Java:
private void mouseTranslateJCanvas3D(MouseEvent me)
    {
        int xchange = me.getX() - mousePressedX;
        int ychange = me.getY() - mousePressedY;

         xtrans+= xchange * transXMul;
         ytrans-= ychange * transYMul;
        

        transVector.x =  xtrans; 
    	transVector.y =  ytrans; 
    	
        targetTransform.setTranslation(transVector);

        jaws.getRoot().setTransform(targetTransform);

    }

    private void mouseZoomJCanvas3D(MouseWheelEvent me)
    {

        if(me.getWheelRotation() > 0)
            zoom++;
        else zoom--;

        transVector.z = zoom;

        targetTransform.setTranslation(transVector);

        jaws.getRoot().setTransform(targetTransform);


        
    }

    protected  void mouseRotateJCanvas3D(MouseEvent me) {

        int xchange = me.getX() - mousePressedX;
        int ychange = me.getY() - mousePressedY;

        xChangeTransform= xchange * rotXMul;
        YChangeTransform= ychange * rotYMul;

        longditudeTransform.rotY( xChangeTransform );
    	latitudeTransform.rotX( YChangeTransform );

    	targetTransform.mul(targetTransform, latitudeTransform);
    	targetTransform.mul(targetTransform, longditudeTransform);
    	
        jaws.getRoot().setTransform(targetTransform);
    	

    }


Die Rotaionen funktionieren auch,aber sie sind nicht von dauer.Also wenn ich zum Beispiel zoome und dann rotieren will ist mein 3D Object wieder bei voller Größe.

Wie kann ich diesen Effekt verhindern ?
 
Du hast jetzt nicht beschrieben, wie du die Rotation machst...

EDIT: Zoomen und Bewegen, so wie du es gepostet hast, müßte doch eigentlich funktionieren...?
 
Du hast jetzt nicht beschrieben, wie du die Rotation machst...

EDIT: Zoomen und Bewegen, so wie du es gepostet hast, müßte doch eigentlich funktionieren...?

Steht doch in mouseRotateJCanvas3D drin.Also ich speichere beim Klicken die beiden X und Y Werte und berechene dann beim Ziehen(MouseDragged) stetig die Differenz der beiden Punkte.Ich erzeuge für beide Transformationen(X und Y) zwei Transform Objekte (longditudeTransform,latitudeTransform),die ich dann mit der Zieltransformation(TargetTransform) multipliziere.
 
Da hätt' ich wohl mal runterscrollen sollen 😳

So beim drüberschauen seh' ich den Fehler nicht, aber habe auch leider gerade keine Zeit, mir da ein KSKB zu basteln.
 

Neue Themen


Zurück
Oben