# Transform3D - dauerhafte Rotation



## aze (21. Jan 2010)

Hi

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


```
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 ?


----------



## Marco13 (21. Jan 2010)

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...?


----------



## aze (21. Jan 2010)

Marco13 hat gesagt.:


> 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.


----------



## Marco13 (21. Jan 2010)

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.


----------

