Transform — Aspose.3D FOSS for Java

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

Transform mengontrol posisi, orientasi, dan skala dari sebuah Node di dalam adegan 3D. Setiap node memiliki tepat satu Transform, diakses melalui node.getTransform().

public class Transform extends A3DObject

Mengakses Transform Node

import com.aspose.threed.Scene;

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

Enumerations

EnumerationsEnumerationsEnumerationsEnumerationsEnumerations
translationVector3getTranslation()setTranslation(Vector3)Offset posisi dari asal node induk. Default Vector3(0, 0, 0).
scalingVector3getScaling()setScaling(Vector3)Faktor skala tidak seragam per sumbu. Default Vector3(1, 1, 1).
rotationQuaterniongetRotation()setRotation(Quaternion)Rotasi sebagai quaternion satuan. Menyetel ini juga memperbarui sudut Euler.
eulerAnglesVector3getEulerAngles()setEulerAngles(Vector3)Rotasi dalam derajat sebagai sudut Euler (X, Y, Z). Menyetel ini juga memperbarui rotasi quaternion.
preRotationVector3getPreRotation()setPreRotation(Vector3)Sudut Euler diterapkan sebelum rotasi utama (digunakan dalam rig FBX).
postRotationVector3getPostRotation()setPostRotation(Vector3)Sudut Euler diterapkan setelah rotasi utama.
geometricTranslationVector3getGeometricTranslation()setGeometricTranslation(Vector3)Translasi hanya lokal: memengaruhi geometri tetapi tidak node anak.
geometricScalingVector3getGeometricScaling()setGeometricScaling(Vector3)Skala hanya lokal: memengaruhi geometri tetapi tidak node anak.
geometricRotationVector3getGeometricRotation()setGeometricRotation(Vector3)Rotasi hanya lokal: memengaruhi geometri tetapi tidak node anak.
transformMatrixMatrix4getTransformMatrix()setTransformMatrix(Matrix4)Matriks transformasi 4x4 gabungan penuh. Di-cache; dihitung ulang ketika komponen apa pun berubah. Menyetelnya memecah kembali menjadi translasi/skala/rotasi.

Metode Setter Fluent

Semua setter mengembalikan this, memungkinkan chaining:

EnumerationsEnumerationsEnumerations
setTranslation(double tx, double ty, double tz)double, double, doubleAtur posisi.
setScale(double sx, double sy, double sz)double, double, doubleAtur skala.
setEulerAngles(double rx, double ry, double rz)double, double, doubleAtur rotasi dalam derajat.
setRotation(double rx, double ry, double rz, double rw)double, double, double, doubleAtur rotasi sebagai quaternion (x, y, z, w).
setPreRotation(double rx, double ry, double rz)double, double, doubleAtur pra-rotasi dalam derajat.
setPostRotation(double rx, double ry, double rz)double, double, doubleAtur pasca-rotasi dalam derajat.
setGeometricTranslation(double x, double y, double z)double, double, doubleAtur translasi geometris.
setGeometricScaling(double sx, double sy, double sz)double, double, doubleAtur skala geometris.
setGeometricRotation(double rx, double ry, double rz)double, double, doubleAtur rotasi geometris dalam derajat.

Contoh Penggunaan

Posisikan Node

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));

Putar dengan Sudut Euler

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);

Putar dengan Quaternion

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

Skala dan Posisi Bersama-sama

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);

Offset Geometris (Offset Pivot)

Transformasi geometris menggeser geometri relatif terhadap pivot node tanpa memengaruhi node anak; berguna untuk memusatkan mesh di dalam node-nya:

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);

Baca Matriks Transform Gabungan

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

Lihat Juga

 Bahasa Indonesia