Transform — Aspose.3D FOSS for Java
Example: com.aspose.threed (aspose-3d-foss)
Transform bir nesnenin konumunu, yönelimini ve ölçeğini kontrol eder Node 3D sahnesinde. Her düğüm tam olarak bir Transform, şu aracılığıyla erişilir node.getTransform().
public class Transform extends A3DObjectBir Düğümün Transform’una Erişme
import com.aspose.threed.Scene;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");
Transform t = node.getTransform();Example
| Example | Example | Example | Example | Example |
|---|---|---|---|---|
translation | Vector3 | getTranslation() | setTranslation(Vector3) | Üst düğümün orijinden konum ofseti. Varsayılan Vector3(0, 0, 0). |
scaling | Vector3 | getScaling() | setScaling(Vector3) | Eksen başına tekdüze olmayan ölçek faktörü. Varsayılan Vector3(1, 1, 1). |
rotation | Quaternion | getRotation() | setRotation(Quaternion) | Dönüşüm bir birim quaternion olarak. Bunu ayarlamak aynı zamanda Euler açılarını da günceller. |
eulerAngles | Vector3 | getEulerAngles() | setEulerAngles(Vector3) | Dönüşüm dereceler cinsinden (X, Y, Z) Euler açıları olarak. Bunu ayarlamak aynı zamanda quaternion dönüşümünü de günceller. |
preRotation | Vector3 | getPreRotation() | setPreRotation(Vector3) | Ana dönüşümden önce uygulanan Euler açıları (FBX rig’lerinde kullanılır). |
postRotation | Vector3 | getPostRotation() | setPostRotation(Vector3) | Ana dönüşümden sonra uygulanan Euler açıları. |
geometricTranslation | Vector3 | getGeometricTranslation() | setGeometricTranslation(Vector3) | Yalnızca yerel çeviri: geometriyi etkiler ancak alt düğümleri etkilemez. |
geometricScaling | Vector3 | getGeometricScaling() | setGeometricScaling(Vector3) | Yalnızca yerel ölçek: geometriyi etkiler ancak alt düğümleri etkilemez. |
geometricRotation | Vector3 | getGeometricRotation() | setGeometricRotation(Vector3) | Yalnızca yerel dönüşüm: geometriyi etkiler ancak alt düğümleri etkilemez. |
transformMatrix | Matrix4 | getTransformMatrix() | setTransformMatrix(Matrix4) | Tam birleşik 4x4 dönüşüm matrisi. Önbellekte; herhangi bir bileşen değiştiğinde yeniden hesaplanır. Bunu ayarlamak çeviri/ölçekleme/dönüşüme geri ayrıştırır. |
Akıcı Ayarlayıcı Metotlar
Tüm ayarlayıcılar döndürür this, zincirleme yapmayı sağlar:
| Example | Example | Example |
|---|---|---|
setTranslation(double tx, double ty, double tz) | double, double, double | Pozisyonu ayarla. |
setScale(double sx, double sy, double sz) | double, double, double | Ölçeği ayarla. |
setEulerAngles(double rx, double ry, double rz) | double, double, double | Dönüşü derece cinsinden ayarla. |
setRotation(double rx, double ry, double rz, double rw) | double, double, double, double | Dönüşü bir quaternion olarak ayarla (x, y, z, w). |
setPreRotation(double rx, double ry, double rz) | double, double, double | Ön rotasyonu derece cinsinden ayarlayın. |
setPostRotation(double rx, double ry, double rz) | double, double, double | Son rotasyonu derece cinsinden ayarlayın. |
setGeometricTranslation(double x, double y, double z) | double, double, double | Geometrik çeviriyi ayarlayın. |
setGeometricScaling(double sx, double sy, double sz) | double, double, double | Geometrik ölçeği ayarlayın. |
setGeometricRotation(double rx, double ry, double rz) | double, double, double | Geometrik rotasyonu derece cinsinden ayarlayın. |
Kullanım Örnekleri
Bir Düğümü Konumlandırma
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));Euler Açılarıyla Döndürme
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);Quaternion ile Döndürme
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Ölçek ve Konumu Birlikte Ayarlama
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);Geometrik Ofset (Pivot Ofseti)
Geometrik dönüşümler, çocuğu düğümleri etkilemeden geometrinin düğümün pivotuna göre konumunu değiştirir; bir mesh’i düğüm içinde ortalamak için faydalıdır:
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);Birleştirilmiş Transform Matrisini Oku
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