Transform — Aspose.3D FOSS for Java

Methods: com.aspose.threed (aspose-3d-foss)

Transform ohjaa kohteen sijaintia, suuntausta ja skaalausta a Node 3D‑kohtauksessa. Jokaisella solmulla on täsmälleen yksi Transform, johon pääsee node.getTransform().

public class Transform extends A3DObject

Solmun Transformin hakeminen

import com.aspose.threed.Scene;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");
Transform t = node.getTransform();

Methods

MethodsMethodsMethodsMethodsMethods
translationVector3getTranslation()setTranslation(Vector3)Sijaintisiirtymä vanhemman solmun alkuperästä. Oletus Vector3(0, 0, 0).
scalingVector3getScaling()setScaling(Vector3)Ei-yhtenäinen skaalauskerroin per akseli. Oletus Vector3(1, 1, 1).
rotationQuaterniongetRotation()setRotation(Quaternion)Kierto yksikkökvaternionina. Tämän asettaminen päivittää myös Eulerin kulmat.
eulerAnglesVector3getEulerAngles()setEulerAngles(Vector3)Kierto asteina (X, Y, Z) Eulerin kulmina. Tämän asettaminen päivittää myös kvaternionikierroksen.
preRotationVector3getPreRotation()setPreRotation(Vector3)Eulerin kulmia sovelletaan ennen pääkierrosta (käytetään FBX-rigissä).
postRotationVector3getPostRotation()setPostRotation(Vector3)Eulerin kulmia sovelletaan pääkierroksen jälkeen.
geometricTranslationVector3getGeometricTranslation()setGeometricTranslation(Vector3)Vain paikallinen siirto: vaikuttaa geometriaan, mutta ei lapsisolmuihin.
geometricScalingVector3getGeometricScaling()setGeometricScaling(Vector3)Vain paikallinen skaalaus: vaikuttaa geometriaan, mutta ei lapsisolmuihin.
geometricRotationVector3getGeometricRotation()setGeometricRotation(Vector3)Vain paikallinen kierto: vaikuttaa geometriaan, mutta ei lapsisolmuihin.
transformMatrixMatrix4getTransformMatrix()setTransformMatrix(Matrix4)Täysi yhdistetty 4x4-muunnosmatriisi. Välimuistissa; lasketaan uudelleen, kun jokin komponentti muuttuu. Sen asettaminen hajottaa sen takaisin siirto-/skaalaus-/kierroskomponenteiksi.

Sujuvat asetusmenetelmät

Kaikki asettajat palauttavat this, mahdollistaen ketjuttamisen:

MethodsMethodsMethods
setTranslation(double tx, double ty, double tz)double, double, doubleAseta sijainti.
setScale(double sx, double sy, double sz)double, double, doubleAseta skaala.
setEulerAngles(double rx, double ry, double rz)double, double, doubleAseta kierto asteina.
setRotation(double rx, double ry, double rz, double rw)double, double, double, doubleAseta kierto kvaternionina (x, y, z, w).
setPreRotation(double rx, double ry, double rz)double, double, doubleAseta esikierros asteina.
setPostRotation(double rx, double ry, double rz)double, double, doubleAseta jälkikierros asteina.
setGeometricTranslation(double x, double y, double z)double, double, doubleAseta geometrinen siirto.
setGeometricScaling(double sx, double sy, double sz)double, double, doubleAseta geometrinen skaalaus.
setGeometricRotation(double rx, double ry, double rz)double, double, doubleAseta geometrinen kierto asteina.

Käyttöesimerkit

Sijoita solmu

import com.aspose.threed.Scene;
import com.aspose.threed.*;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");

// Using fluent setters
node.getTransform().setTranslation(5.0, 0.0, -3.0);

// Or via property setter
node.getTransform().setTranslation(new Vector3(5.0, 0.0, -3.0));

Kierrä Euler‑kulmilla

import com.aspose.threed.Scene;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("rotated");

// Rotate 45 degrees around Y axis
node.getTransform().setEulerAngles(0.0, 45.0, 0.0);

// Chain multiple operations
node.getTransform()
    .setTranslation(2.0, 0.0, 0.0)
    .setScale(2.0, 2.0, 2.0);

Kierrä Quaternionilla

import com.aspose.threed.Scene;
import com.aspose.threed.*;
import com.aspose.threed.*;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("q-rotated");

// 90 degrees rotation around the Y axis
double halfAngle = Math.toRadians(45);   // half the total rotation
Quaternion q = new Quaternion(Math.cos(halfAngle), 0.0, Math.sin(halfAngle), 0.0);
node.getTransform().setRotation(q);

System.out.println("Euler: " + node.getTransform().getEulerAngles());   // synced automatically

Skaalaa ja aseta sijainti yhdessä

import com.aspose.threed.Scene;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("big-offset");

node.getTransform()
    .setTranslation(10.0, 0.0, 0.0)
    .setScale(3.0, 3.0, 3.0)
    .setEulerAngles(0.0, 90.0, 0.0);

Geometrinen siirtymä (Pivot‑siirtymä)

Geometriset muunnokset siirtävät geometriaa solmun pivotin suhteen vaikuttamatta alisolmuihin; hyödyllinen verkon (mesh) keskittämiseen sen solmun sisällä:

import com.aspose.threed.Scene;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("centered-mesh");

// Shift the mesh half a unit down so its base sits at y=0
node.getTransform().setGeometricTranslation(0.0, -0.5, 0.0);

Lue yhdistetty Transform-matriisi

import com.aspose.threed.Scene;
import com.aspose.threed.*;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("m");
node.getTransform().setTranslation(1.0, 2.0, 3.0);
node.getTransform().setEulerAngles(0.0, 45.0, 0.0);

Matrix4 m = node.getTransform().getTransformMatrix();
System.out.println(m.getClass().getName());   // com.aspose.threed.Matrix4

Katso myös

 Suomi